package glpm

import (
	"context"
)

// ZypperManager Zypper包管理器实现
type ZypperManager struct {
	*BaseManager
}

// NewZypperManager 创建Zypper包管理器
func NewZypperManager(config *ManagerConfig) *ZypperManager {
	base := NewBaseManager("zypper", config)
	return &ZypperManager{
		BaseManager: base,
	}
}

// Install 安装包
func (zm *ZypperManager) Install(ctx context.Context, packages []string) error {
	return zm.DefaultInstall(ctx, packages)
}

// Remove 移除包
func (zm *ZypperManager) Remove(ctx context.Context, packages []string) error {
	return zm.DefaultRemove(ctx, packages)
}

// Update 更新包列表
func (zm *ZypperManager) Update(ctx context.Context) error {
	return zm.DefaultUpdate(ctx)
}

// Upgrade 升级包
func (zm *ZypperManager) Upgrade(ctx context.Context, packages []string) error {
	return zm.DefaultUpgrade(ctx, packages)
}

// Search 搜索包
func (zm *ZypperManager) Search(ctx context.Context, pattern string) ([]PackageInfo, error) {
	return zm.DefaultSearch(ctx, pattern)
}

// Info 获取包信息
func (zm *ZypperManager) Info(ctx context.Context, packageName string) (*PackageInfo, error) {
	return zm.DefaultInfo(ctx, packageName)
}

// ListInstalled 列出已安装的包
func (zm *ZypperManager) ListInstalled(ctx context.Context) ([]PackageInfo, error) {
	return zm.DefaultListInstalled(ctx)
}

// IsInstalled 检查指定包是否已安装
func (zm *ZypperManager) IsInstalled(ctx context.Context, packageName string) (bool, error) {
	return zm.DefaultIsInstalled(ctx, packageName)
}